package com.sagframe.sagacity.sqltoy.plus.dao;

import org.sagacity.sqltoy.config.model.EntityMeta;
import org.sagacity.sqltoy.dao.SqlToyLazyDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class SqlToyEntityMetaCache {

    @Autowired
    @Lazy
    @Qualifier("sqlToyHelperDao")
    private SqlToyHelperDao sqlToyLazyDao;

    private static final Map<Class<?>, EntityMeta> entityMetaMap = new HashMap<>();

    public EntityMeta getEntityMeta(Class<?> clazz) {
        if (entityMetaMap.get(clazz) == null) {
            entityMetaMap.put(clazz, sqlToyLazyDao.getEntityMeta(clazz));
        }
        return entityMetaMap.get(clazz);
    }
}
